<HTML>
<HEAD>
<TITLE>
Dato.h
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#ifndef</font> DATO_H_
<font color="blue">#define</font> DATO_H_

<font color="blue">#include</font> <font color="maroon">&#60;stdio.h&#62;</font>
<font color="blue">#include</font> <font color="maroon">&#60;stdlib.h&#62;</font>
<font color="blue">#include</font> <font color="maroon">&#60;string.h&#62;</font>
<font color="blue">#include</font> <font color="maroon">"PrimaryKey.h"</font>
<font color="blue">#include</font> <font color="maroon">"../enums/TipoSerializacion.h"</font>

<font color="blue">using</font> <font color="blue">namespace</font> std;
<font color="blue">class</font> Dato<font color="black">{</font>
    <font color="blue">private</font><font color="black">:</font>
        <font color="blue">void</font> reverse<font color="black">(</font><font color="blue">char</font> s<font color="black">[</font><font color="black">]</font><font color="black">)</font>;
        
    <font color="blue">protected</font><font color="black">:</font>
        <font color="blue">unsigned</font> <font color="blue">int</font> tamanioTexto;
        <font color="blue">unsigned</font> <font color="blue">int</font> tamanioBinario;

    <font color="blue">public</font><font color="black">:</font>
        
        <font color="green">/**
         * @author emilio
         * @return unsigned int tamanio 
         * @version 
         */</font>
        virtual <font color="blue">unsigned</font> <font color="blue">int</font> getTamanio<font color="black">(</font>TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * Comparador con clave primaria.
         * 
         * @author emilio
         * @param Dato* datoAComparar
         * @return bool 
         * @version 
         */</font>
        virtual <font color="blue">int</font> compareTo<font color="black">(</font>Dato <font color="black">*</font>datoAComparar<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * Comparador por lista de campos. En la version siguiente se va a cambiar
         * el array dinamico de strings por un vector. El orden de los campos debe
         * ser descendente por prioridad.
         * 
         * @author emilio
         * @param Dato* datoAComparar
         * @param char** camposAComparar
         * @param int cantCamposAComparar
         * @return bool 
         * @version 
         */</font>
        virtual <font color="blue">int</font> compareToWith<font color="black">(</font>Dato <font color="black">*</font>datoAComparar, <font color="blue">char</font><font color="black">*</font><font color="black">*</font> camposAComparar, <font color="blue">int</font> cantCamposAComparar<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * @author emilio
         * @param void* datoSerializado
         * @param TipoSerializacion modo 
         * @return void* dato
         * @version 
         */</font>
        virtual <font color="blue">void</font> serialize<font color="black">(</font><font color="blue">void</font> <font color="black">*</font><font color="black">*</font>datoSerializado, TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * @author emilio
         * @param TipoSerializacion modo
         * @return void* dato
         * @version 
         */</font>
        virtual <font color="blue">void</font> unserialize<font color="black">(</font><font color="blue">void</font> <font color="black">*</font>datoADeserializar, TipoSerializacion modo<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="green">/**
         * @author emilio
         * @param TipoSerializacion modo
         * @return Dato* clon
         * @version 
         */</font>
        virtual <font color="blue">void</font> clone<font color="black">(</font>Dato<font color="black">*</font> clon<font color="black">)</font><font color="black">=</font><font color="maroon">0</font>;
        
        <font color="blue">void</font> intToString<font color="black">(</font><font color="blue">int</font> n, <font color="blue">char</font> s<font color="black">[</font><font color="black">]</font><font color="black">)</font>;
        
        <font color="blue">int</font> stringToInt<font color="black">(</font><font color="blue">char</font> s<font color="black">[</font><font color="black">]</font><font color="black">)</font>;
        
        <font color="blue">void</font> floatToString<font color="black">(</font><font color="blue">float</font> n, <font color="blue">char</font> s<font color="black">[</font><font color="black">]</font><font color="black">)</font>;
        
        <font color="blue">float</font> stringToFloat<font color="black">(</font><font color="blue">char</font> s<font color="black">[</font><font color="black">]</font><font color="black">)</font>;
        
        <font color="blue">char</font> boolToChar<font color="black">(</font><font color="blue">bool</font> b<font color="black">)</font>;
        
        <font color="blue">bool</font> charToBool<font color="black">(</font><font color="blue">char</font> c<font color="black">)</font>;
    <font color="black">}</font>;

<font color="blue">#endif</font> <font color="green">/*DATO_H_*/</font>

</PRE>
</BODY>
</HTML>
